/**
 * 入口文件
 */
// 引入koa
const Koa = require('koa')
// 引入koa-router
const Router = require('koa-router')
// post请求参数需要安装bodyParser解析
const bodyParser = require('koa-bodyparser')

// 视图管理
const Views = require('koa-views')
// 静态资源解析
const Statics = require('koa-static')
// 引入签名算法包
const { Wechat } = require('wechat-jssdk')
const { CARD_TYPE } = require('wechat-jssdk/lib/Card')
// 获取签名授权的实例
const wx = new Wechat({
  appId: "wxe733093faa04b8aa",
  appSecret: "24f11b6815515016170c4ffeb6977e65"
})

// 创建koa实例
const app = new Koa()
app.use(bodyParser())
// koa服务监听的端口号
const port = 3000
// 创建路由实例
const router = new Router()

// 定义后台接口=》做js-sdk的签名验证
router.get('/api/sign', async (ctx) => {
  // console.log(ctx.request.query.signUrl)
  let signUrl = ctx.request.query.signUrl || ''
  // 获取授权数据，返回给前端
  const res = await wx.jssdk.getSignature(signUrl)
  ctx.body = { status: 200, msg: '获取签名数据成功！', data: res }
}).post('/api/post', (ctx) => {
  console.log('post:', ctx.request.body)
  ctx.body = {
    status: 200,
    data: []
  }
})

// 注册路由=》生效
app.use(router.routes())


// 注册静态资源路径
app.use(Statics(__dirname + '/assets'))

// 注册视图管理和模版引擎
// console.log(__dirname)
app.use(Views(__dirname + '/views', {
  map: {
    hbs: 'handlebars'
  }
}))

// 注册一个插件
/**
 * ctx =》context 上下文
 */
app.use(async ctx => {
  // 获取授权数据，传递给模版页面
  const res = await wx.jssdk.getSignature('http://localhost:3000/')
  // console.log(res)
  // 同步渲染完成后返回
  await ctx.render('index.hbs', res)
})

app.listen(port, () => console.log(`koa服务运行在：${port}`))
